import axios from 'axios'

import { getJwt, removeJwt } from '@/utils/jwt'
import { getUserIdFromToken } from '@/apis/user'

// 创建axios实例
const request = axios.create({
  baseURL: 'http://localhost:8888',
  timeout: 10000 // 请求超时时间
})

// axios请求拦截器
request.interceptors.request.use(
  (config) => {
    // 在请求头中携带jwt
    const token = getJwt()
    if (token) {
      config.headers['Authorization'] = token
      // 从JWT中解析用户ID并添加到请求头
      const userId = getUserIdFromToken(token)
      if (userId) {
        config.headers['memberId'] = userId
      }
    }
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// axios响应拦截器
// 配置响应拦截器
// axios响应拦截器
request.interceptors.response.use(
  (resp) => {
    // 成功响应时直接返回数据
    console.log('API响应:', resp)
    return resp.data
  },
  (error) => {
    // 错误处理
    console.log('API错误:', error)

    // 401错误处理
    if (error.response && error.response.status === 401) {
      removeJwt()
      location.href = '/login'
    }

    // 其他错误处理
    if (error.response && error.response.status === 400) {
      // 处理400错误（通常表示参数错误）
      const errorMessage = error.response.data?.message || '请求参数错误'
      throw new Error(errorMessage)
    }

    return Promise.reject(error)
  }
)


export default request